#include<iostream>
#include<unordered_map>//哈希表的头文件
using namespace std;
int main() {
   /*
加藤翔子现在得到一个长度为 
𝑛
n 的字符串 
𝑠
s。他希望通过删除其中的一些字符，并将剩余字符重新排列，以得到目标字符串 
Kato_Shoko
Kato_Shoko。
对于给定的字符串 
𝑠
s，请判断是否可以通过删除任意个（可为 
0
0 个）字符，并对剩余字符进行任意重排；若能得到与目标字符串 
Kato_Shoko
Kato_Shoko 逐字符完全相同的字符串。如果可以，输出需要删除的最少字符数；否则输出 
NO
NO。
输入描述:
第一行输入一个整数 
，表示字符串的长度。
n，由大小写字母、数字和下划线组成的字符串 
输出描述:
如果无法得到目标字符串，直接输出 
NO否则，先输出 
YES
YES，随后在同一行输出一个整数，表示需要删除的最少字符数，两者以空格分隔。*/
    int n;
    string s;
    cin >> n;
    cin >> s;
    string target = "Kato_Shoko";
    unordered_map<char, int>target_count;//哈希表专有名称 unordered_map <查阅数据类型，统计的数据类型> 变量名
    for (char c : target) {//循环查阅数组的for(数据类型 变量名:目标变量名)
        target_count[c]++;//把字母统计到哈希表里面数字+1
    }
    unordered_map<char, int>s_count;//在创建一个哈希表来标记输入的东西
    for (char c : s) {
        s_count[c]++;
    }
    for (auto& pair : target_count) {// 结构化绑定，作用是遍历哈希表，pair一双，下面固定有什么什么=pair.first;
        char ch = pair.first;
        int need = pair.second;
        if (s_count[ch] < need) {
            cout << "NO";
            return 0;
        }
    }
    int delete_count = n-target.length();
    cout << "YES" << " " << delete_count;
    return 0;
}